﻿using System;
using System.Reflection;
using System.Transactions;

namespace RockBus.Logging.Interfaces
{
    public interface ILogger
    {
        void Log(MethodBase currentMethod, LogLevelEnum logLevel, string text, params object[] args);

        void LogError(MethodBase currentMethod, string text, params object[] args);

        void LogWarning(MethodBase currentMethod, string text, params object[] args);

        void LogInfo(MethodBase currentMethod, string text, params object[] args);

        void LogDebug(MethodBase currentMethod, string text, params object[] args);

        void LogVerbose(MethodBase currentMethod, string text, params object[] args);

        void Log(MethodBase currentMethod, Exception exc);

        void Log(MethodBase currentMethod, LogLevelEnum logLevel, Transaction transaction);

        void Log(MethodBase currentMethod, MessageData messageData);

        void Log(MethodBase currentMethod, LogData logData);
    }
}